package com.bidevalution.dao.mapper;

import java.util.List;
import java.util.Map;

import com.bidevalution.dao.entity.BeSectionStep;
import org.apache.ibatis.annotations.Param;

public interface BeSectionStepMapper {
	int deleteByPrimaryKey(String seqId);
	
	int deleteBySectionId(String sectionId);

	int insert(BeSectionStep record);

	int insertSelective(BeSectionStep record);

	/**
	 * 根据主键查询标段环节信息
	 *
	 * @param seqId
	 * @return
	 */
	BeSectionStep selectByPrimaryKey(String seqId);

	int updateByPrimaryKeySelective(BeSectionStep record);

	int updateByPrimaryKeyWithBLOBs(BeSectionStep record);

	int updateByPrimaryKey(BeSectionStep record);

	/**
	 * 获取标段环节列表
	 * 
	 * @param sectionId
	 * @return
	 */
	List<BeSectionStep> getBeSectionStepList(String sectionId);

	List<BeSectionStep> getAllStepList(String sectionId);

	/**
	 * 根据当前环节id获取子环节列表
	 * 
	 * @param parentId
	 * @return
	 */
	List<BeSectionStep> getChildSectionStepList(@Param("sectionId") String sectionId,
			@Param("parentCode") String parentCode);

	BeSectionStep getSectionStepByCode(@Param("sectionId") String sectionId, @Param("stepCode") String stepCode);

	/**
	 * 重评时获取标段环节列表
	 *
	 * @param sectionId
	 * @return
	 */
	List<Map<String, Object>> getBeSectionStepReappraisalList(String sectionId);

	/**
	 * 获取后面的所有环节 @param @param sectionId @param @param orderNum @param @return
	 * 参数 @return List<BeSectionStep> 返回类型 @throws
	 */
	List<BeSectionStep> getNextStepList(@Param("sectionId") String sectionId,@Param("parentCode") String parentCode,  @Param("orderNum") Integer orderNum);

	/**
	 * 获取前面的所有环节 @param @param sectionId @param @param orderNum @param @return
	 * 参数 @return List<BeSectionStep> 返回类型 @throws
	 */
	List<BeSectionStep> getPretStepList(@Param("sectionId") String sectionId,@Param("parentCode") String parentCode, @Param("orderNum") Integer orderNum);

	/**
	 * 获取当前环节的所有子环节id
	 *
	 * @param sectionId
	 * @param parentCode
	 * @return
	 */
	List<BeSectionStep> getAllChildSectionStep(@Param("sectionId") String sectionId,
			@Param("parentCode") String parentCode);

	/**
	 * 获取当前环节的父环节节点
	 *
	 * @param sectionId
	 * @param stepCode
	 * @return
	 */
	BeSectionStep getParentSectionStep(@Param("sectionId") String sectionId,
											   @Param("stepCode") String stepCode);
	/**
	 * 获取当前环节
	 *
	 * @param sectionId
	 * @return
	 */
	BeSectionStep getCurrentSectionStep(@Param("sectionId") String sectionId);


	/**
	 * 根据父环节节点获取最后一个子环节节点
	 *
	 * @param sectionId
	 * @param parentCode
	 * @return
	 */
	BeSectionStep getLastSectionStep(@Param("sectionId") String sectionId,
									   @Param("parentCode") String parentCode);
	void resetActive(String sectionId);
}